perm filename C[4,BGB] blob sn#013952 filedate 1972-11-29 generic text, type T, neo UTF8
00100	; ALTERNATE PDP-10 MNEMONICS.
00200	
00300		OPDEF LIP[HLR]↔OPDEF LAP[HRR]
00400		OPDEF DIP[HRLM]↔OPDEF DAP[HRRM]
00500		OPDEF CAR[HLRZ]↔OPDEF CDR[HRRZ]
00600		OPDEF DIPZ[HRLZM]↔OPDEF DAPZ[HRRZM]
00700		
00800		OPDEF ZIP[HRRZS]↔OPDEF ZAP[HLLZS]
00900		OPDEF WIP[HRROS]↔OPDEF WAP[HRRZS]
01000		OPDEF NIP[HLRE]↔OPDEF NAP[HRRE]↔OPDEF NIM[HRREI]
01100		OPDEF LAC[MOVE]↔OPDEF DAC[MOVEM]
01200		OPDEF SLAC[MOVS]
01300	 
01400		OPDEF GO[JRST]
01500		OPDEF LACI[MOVEI]↔OPDEF SLACI[MOVSI]
01600		OPDEF LAPI[HRRI]↔OPDEF LIPI[HRLI]
01700		OPDEF LACN[MOVN]↔OPDEF DACN[MOVNM]
01800		OPDEF LACM[MOVM]↔OPDEF DACM[MOVMM]
01900	
02000		OPDEF FIXX[FIX 233000]↔OPDEF FLOAT[FSC 233]
     

00100	; SAIL LIKE SUBROUTINE LINKAGE.
00200		↓P ←← 17
00300		DEFINE SUBR(NAME){INTERN NAME↔↓NAME: ;}
00400		DEFINE CALL(NAME,X1,X2,X3,X4){
00500		IFDIF <> <X1> {PUSH P,X1
00600		IFDIF <> <X2> {PUSH P,X2
00700		IFDIF <> <X3> {PUSH P,X3
00800		IFDIF <> <X4> {PUSH P,X4}}}}
00900		PUSHJ P,NAME}
01000	
01100	;ARGUMENT FETCH.
01200		DEFINE ARG1<-1(17)>
01300		DEFINE ARG2<-2(17)>
01400		DEFINE ARG3<-3(17)>
01500		DEFINE ARG4<-4(17)>
01600	
01700	;CALL AND RETURN VALUE.
01800		DEFINE SETQ (VAR,LIST){
01900		CALL(LIST)
02000		DAC 1,VAR}
02100	
02200	;RETURN FROM AN N-ARGUMENT SUBROUTINE CALL.
02300		DEFINE POP0J <POPJ 17,>
02400		↓POP1J.: SUB 17,[XWD 2,2]↔GO @2(17)↔ DEFINE POP1J<GO POP1J.>
02500		↓POP2J.: SUB 17,[XWD 3,3]↔GO @3(17)↔ DEFINE POP2J<GO POP2J.>
02600		↓POP3J.: SUB 17,[XWD 4,4]↔GO @4(17)↔ DEFINE POP3J<GO POP3J.>
02700		↓POP4J.: SUB 17,[XWD 5,5]↔GO @5(17)↔ DEFINE POP4J<GO POP4J.>
02800	
02900	;ACCUMULATOR TRANSPARENCY.
03000		FOR @$ I←0,17{↓AC$I: 0↔}
03100		DEFINE SAVAC $(N){LAC[XWD 2,AC2]↔BLT AC$N}
03200		DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
03300	
03400	;MACROS FOR ALLOCATING AND NAMING WORKING SPACE.
03500		DEFINE ACCUMULATORS(LIST){ACPTR←←2
03600		FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
03700		DEFINE DECLARE (LIST){
03800		FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
03900	
04000	;FATAL ERROR MESSAGE.
04100		DEFINE FATAL(STR){PUSHJ P,FATAL.↔ASCIZ/STR/}
04200		FATAL.:OUTSTR[BYTE(7)15,12,106,101,124↔"AL - "⊗1↔0]
04300		OUTSTR @(17)↔INCHRW↔GO .-1↔LIT